Server-side match

ABSTRACT

Systems and techniques for converting numeric queries into substantially equivalent textual queries are described. In general, the systems and techniques discussed use search query logs to accurately select a most probably mapping for a numeric-to-text conversion. This mapping can occur when a system (e.g., a server-side search system) receives a series of numeric inputs (e.g., from a cell phone keypad) that may correspond to more than one word. For example, a search server may receive input 22737, which corresponds to both the words ACRES and CASES, as part of a query. The server uses current entries in query logs to create mappings for words from the numeric input. If recent queries indicate that the term ACRES is currently more popular than the term CASES, the mapping may match the entry 22737 to the text ACRES.

TECHNICAL FIELD

This specification relates to generating text and, more particularly, togenerating text based on numerical input.

BACKGROUND

As computers and computer networks become more and more able to access awide variety of information, people are demanding more ways to obtainthat information. Specifically, people now expect to have access, on theroad, in the home, or in the office, to information previously availableonly from a permanently connected personal computer hooked to anappropriately provisioned network. They want stock quotes and weatherreports from their cell phones, e-mail from their personal digitalassistants (PDAs), up-to-date documents from their palm tops, andtimely, accurate search results from all their devices. They also wantall of this information when traveling, whether locally, domestically,or internationally, in an easy-to-use, portable device.

Portability generally requires a device small in size, which in turnlimits the number of data entry keys and the amount of memory andavailable processing power. In addition, ultra portable devices oftenmust be held in one hand or not held at all, so that data entry must beone-handed or no-handed. These limitations in the device generally mustbe compensated for by the user. For example, the user may have to use alimited keyboard such as a telephone keypad, or limited speechrecognition capabilities. Such constrained devices may force a user tolearn special tricks for data entry (such as shorthand writing on a PDA)or may generate data that the user never intended, by making inaccurateguesses at ambiguous data entries.

Some attempts to solve these problems have been made. For example, PDAshave been programmed to recognize shorthand and longhand writing.However, the recognition accuracy may be poor, and writing on a smallmobile device may be difficult for users. Also, cell phones canrecognize entered letters, even though the presence of three letters oneach key can create ambiguities about the intended text, such as byallowing the user to press key combinations, either simultaneously or insequence (e.g., triple tap). However, methods that include pressing keycombinations, such as triple tap, may require a user to generatesubstantially more keystrokes than if the user had access to a keyboard.The increase in keystrokes may slow down a user's interaction with thedevice and discourage retrieving and entering information using mobiledevices.

SUMMARY

This specification describes systems and techniques for convertingnumeric queries into substantially equivalent textual queries. Ingeneral, the systems and techniques discussed use search query logs toaccurately select a most probably mapping for a numeric-to-textconversion. This mapping can occur when a system (e.g., a server-sidesearch system) receives a series of numeric inputs (e.g., from a cellphone keypad) that may correspond to more than one word. For example, asearch server may receive input 22737, which corresponds to both thewords ACRES and CASES, as part of a query. The server uses currententries in query logs to create mappings for words from the numericinput. If recent queries indicate that the term ACRES is currently morepopular than the term CASES, the mapping may match the entry 22737 tothe text ACRES.

In a first general aspect, a computer-implemented method for matchingtext queries to corresponding numerically queries is described. Themethod includes receiving a plurality of text queries at a server from aplurality of users, generating a numerically equivalent query for eachtext query of the plurality of text queries by mapping symbols of thetext query to associated numbers using a keypad standard that specifiesassociations between symbols and numbers, generating a primary mappingbetween each numerically equivalent query and a text query having asubstantially highest frequency of occurrence among text queriesassociated with the numerically equivalent query, and outputting aprimary mapped text query in response to receiving an associatednumerically equivalent query transmitted from a user.

In certain embodiments, the method can include generating additionalmappings between the numerically equivalent query and additional textqueries based on the whether a frequency of occurrence for theadditional text queries exceeds a predetermined occurrence threshold.The method may also include outputting the additional text queries withthe primary mapped text query. Additionally, the outputting can includetransmitting the primary mapped text query for display to the user.

In a second general aspect, a system is described. The system includesmeans for generating a numerically equivalent query for each of apreviously stored text query by mapping symbols of the text query toassociated numbers using a keypad standard that specifies associationsbetween numbers and symbols, a frequency calculator to calculate afrequency of occurrence for each stored text query, and a mapper togenerate a mapping between the numerically equivalent query and a textquery with a substantially highest frequency of occurrence among textqueries associated with the numerically equivalent query.

In a third general aspect, a method for generating text queries based onnumerically equivalent queries input by users is described. The methodincludes generating numerically equivalent queries based on text queriesby representing each symbol of a text query using a number, mapping atext query having a greatest frequency of occurrence among the textqueries corresponding to a numerically equivalent query, and outputtingthe mapped text query in response to receiving the correspondentnumerically equivalent query from a user.

The systems and techniques described here may provide one or more of thefollowing advantages. First, the system can permit mapping text queriesto numerical queries based on the text queries' current frequency ofoccurrence, which may increase the accuracy of numeric-to-textconversion. Second, the system can increase the ease of applyingnumeric-to-text conversion internationally by accessing a text querycorpus of a particular language based on a location of a user submittinga numeric query. Third, a system can increase accuracy ofnumeric-to-text conversion by accessing a particular text query corpusbased on a context (e.g., news search context, image search context,etc.) in which a user submits a numeric query. Fourth, a system maydynamically update text that is mapped to numeric queries based onrecently received text queries from users. Fifth, numeric-to-textconversion accuracy can be increased by selecting particular segmentedtext query corpuses (e.g., segmented by country, language, time, users,group of users, etc.), and defaulting to a superset segment if aselected segmented text query corpus does not include enough data.

The details of one or more embodiments of the text-to-conversion featureare set forth in the accompanying drawings and the description below.Other features and advantages of the text-to-conversion feature will beapparent from the description and drawings, and from the claims.

DESCRIPTION OF DRAWINGS

FIG. 1 shows an example system for converting numeric queries to textqueries using numeric-to-text query mappings maintained on a server.

FIG. 2 shows a portion of the system of FIG. 1 in more detail.

FIG. 3 is a flow chart of an illustrative method for using text-basedquery logs to generate numeric-to-text query mappings.

FIG. 4 is a flow chart of an illustrative method for processing numericqueries using numeric-to-text query mappings.

FIG. 5 is a schematic diagram of a general computer system and anexample mobile device.

Like reference symbols in the various drawings indicate like elements.

DETAILED DESCRIPTION

FIG. 1 shows an example system that uses search query logs to select themost probably mapping for a numeric-to-text conversion. This mapping canoccur when the server receives a series of numeric inputs (e.g., from acellular phone keypad) that may correspond to more than one word. Forexample, the server can receive the input “22737” as part of a query,however, this numerical series can correspond to both the words “ACRES”and “CASES.” The server can use current entries in query logs to createmappings for words from the numeric input. If recent queries indicatethat the term “ACRES” is currently more popular than the term “CASES,”the mappings can match the entry “22737” to the text “ACRES.”

More specifically, FIG. 1 shows an example system 100 for convertingnumeric queries to text queries using numeric-to-text query mappings 102maintained on a server 104. In one implementation, a computing device106 transmits a numeric query 108 to the server 104. The numeric query108 can be translated into text using the mappings 102. The text canthen be used, for example, in a search which generates results that arereturned to the computing device 106.

The computing device 106 can be a cellular phone running a web browser110. The user may input a numeric search query instead of entering atext search query into the cellular phone because entering text usingthe cellular phone's keypad may require depressing a key multiple timesto select a desired letter. For example, each key on a cellular phone'skeypad can be assigned three or four letters. Some keypads indicate suchmapping of the letters to the numeric keys by printing the letters onthe numeric keys. For example, the letters “ABC” can be printed on acellular phone's “2” key. Similarly, the remaining letters can be mappedto the remaining numeric keys. To enter the text query “CAR,” forexample, a user can use the triple tap method, where the user presses“222” to enter the letter “C,” “2” to enter the letter “A,” and “777” toenter the letter “R.”

A user, however, entering a numeric search query may only have to presseach key once because a single key can represent any one of the lettersassigned to it. For example, a user can select the letter A, B or C bypressing the “2” key of the keypad. Using this method, a user can entera numeric search “227,” which represents the term “CAR.” Pressing 2+2+7for the text “CAR” may be more convenient than entering 222+2+777 (for“C”+“A”+“R”). The mappings 102 then can be used to disambiguate whattext the numeric query “227” may represent.

The numeric query 108 can be transmitted over a network, such as theInternet, and received by the server 104. A query processor 112,executing within the server 104, can process the numeric query 108. Toaid in processing numeric queries, the query processor 112 can useinformation included in the numeric-to-text query mappings 102. Suchinformation can be stored, for example, in a mappings table 115.

If a text search query corresponding to the numeric query 108 haspreviously been processed by the server 104, the query processor 112 canaccess a corresponding row (e.g., containing “227”) in thenumeric-to-text query mappings 102 to look up an associated text query118 (e.g., “CAR”) from a mapped text query column 116. The server 104can then return the associated text query 118, such as “CAR,” along withsearch results 120 matching the associated text query.

Having entered the three digits “227” as the original numeric query 108,the user of the computing device 106 can see the results of a searchgenerated using the text “CAR” in the web browser 110. In certainimplementations, an associated text query field 122 of the web browser110 can display the numeric-to-text translation “CAR” derived from themappings 102, and a search results field 124 can display web contentassociated with the search results 120 generated using the translatedtext.

In other implementations, the associated text query 118 can be returnedand displayed on the computing device 106 without generating the searchresults 120. The user can confirm the associated text query 118 is thetext the user wanted to enter, and the confirmation (or associated textquery) can be transmitted to the server 104 to generate the searchresults 120. Additionally, the server 104 can transmit multipleassociated text queries from which the user can select. The associatedtext query selected by the user can be used by the server 104 togenerate the search results 120. This is described in more detail below.

Some numeric queries 108 can translate into more than one text query,for example “229.” The numeric query “229” is ambiguous because it cantranslate to “BAY,” “CAW,” “CAY,” etc. In one implementation, the server104 disambiguates numerical queries using a frequency ranking thatreflects a number of times an associated text query occurs in a storedlog of text queries. For example, two of the translations, “BAY” and“CAW,” are represented as rows in the mappings table 115 used for thenumeric-to-text query mappings 102. Both rows have “229” in theirnumeric query columns 114. Using the mappings 102, the numeric query“229” can be translated as “BAY” or “CAW.” To facilitate selection ofthe most probable associated text query, the query processor 112 canaccess a frequency ranking column 126. The frequency ranking 126 for“BAY” is “1,” indicating a higher frequency ranking than that for “CAW,”which has a frequency ranking of “2.” In this case, the query processor112 can make a probabilistic determination that the numeric query “229”represents “BAY.”

Some numeric queries 108 may not have corresponding entries in thenumeric-to-text query mappings 102. For example, the numeric query 108may be a string of digits which represent a string of uncommon words. Ifthe query processor 112 has no past text queries on which to base itsprocessing, the query processor 112 can use a numeric-to-text converter128 and a language model not derived from textual server query logs toformulate a probable corresponding text query. For example, thenumeric-to-text converter 128 can determine a probable correspondingtext query using occurrence information from a language model corpusused in standard voice recognition programs.

In certain implementations, numeric search queries can have more thanone search term. For example, a numeric search query can include severalterms delimited by, for example, an asterisk symbol, which represents aspace between the terms.

In other implementations, the system 100 can be configured to make useof information from text queries it receives over time. The system 100can update the numeric-to-text query mappings 102 using information fromtext-based search queries. The numeric-to-text mappings can also beupdated based on the text corpus that is used for searching, forexample, web-pages that are crawled and indexed by a search engine. Incertain implementations, the frequency rankings are updated on aperiodic or predetermined basis using new textual queries received sincethe last update of frequency rankings. The newly received text queriescan be examined and statistical information on the occurrence of queryterms can be used to supplement existing statistical models of frequencyoccurrence for the associated query terms. This may offer an advantageof dynamically updating the ability of the system to accuratelydisambiguate numeric queries based on recently received text queries.

In other implementations, the frequency rankings can be generated usinga previously collected corpus of text queries, such as historical querylogs. The frequency rankings then can be updated using the previouslycollected corpus as described above.

FIG. 2 shows a portion of the system 100 of FIG. 1 in more detail. Forexample, FIG. 2 shows additional detail within the server 104, accordingto one implementation. The system 100 can receive text queries 202 inaddition to the numeric queries 108. The system 100 can be implemented,for example, as part of an Internet search provider's general system.The system 100 can obtain information about occurrence and concurrenceof terms included in submitted text queries.

The server 104 includes an interface 204 that allows communications in avariety of ways. For example, server 104 can be communicativelyconnected to a network such as the Internet, and thereby communicatewith various devices, such as server farms, wireless communicationdevices, personal computers, and cellular phones. The communication flowfor any device can be bidirectional so that server 104 can receiveinformation, such as commands, from the devices, and can sendinformation to the devices.

Requests received from devices can be provided to the query processor112, which can interpret a request, associate it with predefinedacceptable requests, and pass it on, such as in the form of a command toanother component of system 100 to perform a particular action. Forexample, where the request includes a search query, the query processor112 can cause a search engine 206 to generate search resultscorresponding to the search request. The search engine 206 can use dataretrieval and search techniques, such as those used by the GooglePageRank™ system. The results generated by the search engine 206 canthen be provided to the original requester using a response formatter208, which carries out formatting on the results.

When the type of search query received by the server 104 is a text query202, the server 104 can update its numeric-to-text query mappings 102 inaddition to returning the search results 120. In particular, thenumeric-to-text query mappings 102 can be updated as text queries 202are received over time. These updates can occur in real time or on aperiodic or predetermined basis. For example, the server 104 may receivea text query 202, such as “HOT CAR,” from the browser 110 executing on auser's cellular phone. The query processor 112 can “recognize” thesearch query “HOT CAR” as a text query, as opposed to a numeric query,because it contains, for example, American Standard Code for InformationInterchange (ASCII) representations of one or more letters, as opposedto being composed of ASCII representations of digits.

The query mapping module 210 can maintain up-to-date numeric-to-textquery mappings 102 based on the text query 202 that the server 104receives. One component of the query mapping module 210, a numeric querygenerator 212, can determine an equivalent numeric query correspondingto each text query 202 it receives. The determination can be based onkeypad standards, such as those employed to map letters to theircorresponding numeric keys on a cellular phone's keypad, and can furtherbe language specific. For example, the letter H is mapped to thenumerical equivalent “4” key on a cellular phone using the Mobile 1keypad standard. The remaining letters and space in the text “HOT CAR”are converted using the Mobile 1 keypad standard.

In other implementations, other keypad standards can be used to convertthe incoming text query to a numerical representation, such as theInternational Standard, the North American Classic, the AustralianClassic, and the United Kingdom (UK) Classic.

Using these and previously discussed considerations, if the numericquery generator 212 receives a text query 202 containing “HOT CAR,” itcan determine using the Mobile 1 keypad standard that the correspondingequivalent numeric query is “468 227.” As shown in FIG. 1, the querymapping module 210 can update a row in the numeric-to-text querymappings 102 with the value “468 227” in the numeric query column 114and the value “HOT CAR” in the mapped text query column 116. Such anupdate may include incrementing a count column (not depicted in themappings table 115) to indicate the receipt of an additional instance ofthe search query “HOT CAR.” In certain implementations, such countcolumns may be compared periodically to adjust frequency rankings 126 ofentries in the mappings table 115. Of course, the description of themappings table 115 is for the purposes of illustration and is notintended to limit the data structures within which the mappinginformation can be stored. In other implementations, the mappinginformation can be stored in various other data structures, e.g.,arrays, tree structures, matrices, etc.

Over time, the server 104 can receive numerous additional text queries202 (e.g., “GOT CAR,” “IOU CAP,” etc.) which have the equivalent numericquery “468 227” as “HOT CAR.” The query mapping module 210 can useinformation from these additional text queries 202 to update thenumeric-to-text query mappings 102.

As described in association with FIG. 1, the server 104 can receivenumeric queries 108. It can be advantageous to store and maintaininformation based on text queries 202 to make probabilisticdeterminations regarding which text queries map to received numericqueries 108. These determinations can be based on frequencies thatparticular terms occur in received search queries.

A text query frequency calculator 216 can maintain and use frequencycounts of individual search queries received over time by the server104. A search query's frequency count can represent the occurrence ofthe search query, or the occurrence of the terms within the search querywhen it contains multiple terms. The frequency counts can be used tocalculate and maintain up-to-date frequency rankings 126 (see FIG. 1) inthe mappings table 115. For example, mapped text queries 116 “BAY” and“CAW” in the mappings table 115 share the same “229” entry in thenumeric query column 114, but the entries have different frequencyrankings 126. In particular, the “BAY” entry in the mappings table 115has a higher frequency ranking of “1.” In this case, the higher rankingof “1” may be attributed to a greater occurrence rate of “BAY” in searchqueries over its counterpart “CAW,” which has a frequency ranking of

In certain implementations, recently received text queries or termswithin multiple-term text queries can be more heavily weighted in thefrequency rankings than text queries or terms received at an earliertime. This can increase a frequency ranking of the recently receivedtext queries or terms above a frequency ranking of earlier received textqueries or terms despite a greater occurrence of the earlier receivedqueries or terms relative to the recently received ones.

Using a text query frequency calculator 216 to maintain frequencyrankings of search queries received over time by the server 104, thesystem 100 can disambiguate numeric queries 108 corresponding to thesame mapped text queries. To aid in determining (and maintaining overtime) the primary text query associated with each particular numericquery, the query mapping module 210 can include another component, aprimary mapper 214, which will now be described.

The primary mapper 214 can determine, for a particular numeric query114, the “primary” mapped text query 116 associated with it. Designatinga “primary” mapped text query can be used to determine the most probabletext query 116 for a particular numeric query 108 received by the server104. For example, when the mappings table 115 contains more than one rowhaving the same numeric query 114, such as “229” of FIG. 1, the primarymapper 214 can designate one of the mapped text queries 116 as theprimary mapped text query. In certain implementations, the primarymapper 214 can select a term or search query having the highestfrequency ranking 126, making it the primary mapped text query. In otherimplementations, the primary mapper 214 may use the frequency rankings126 in conjunction with additional information (not depicted in themappings table 115), such as assigning a higher ranking to mapped textqueries generally received more recently, as described above.

The primary mapper 214 can automatically designate a mapped text query116 as a “primary” mapped text query when just one row exists in themappings table 115 for its corresponding numeric query 114. For example,the numeric query “227” shown in FIG. 1 has only one associated mappedtext query 116 “CAR” in the mappings table 115, so that the primarymapper 214 designates that text query 116 as the primary one. However,the numeric query “228” has two associated mapped text queries 116 “BAY”and “CAW.” In this case, the primary mapper 214 can determine that themapped text query 116 “BAY” is the “primary” mapped text query becauseits frequency ranking is higher (e.g., “1” compared to “2” for the “CAW”entry). Having a primary mapped text query for each of the numericqueries 114 in the mappings table 115 can aid in resolving ambiguitiesfor numeric queries 108 received by the server 104. For example, whenthe server 104 receives an ambiguous numeric query 108 such as “228,”the server 104 can select “BAY” as the most probable match to thenumeric query 108 if “BAY” is the “primary” mapped query.

As the server 104 receives additional text queries 202 over time, thequery mapping module 210 can update the mappings table 115 as needed tomaintain updated frequency rankings 126 and designations of the primarymapped text query for each numeric query 114. In certainimplementations, the system 100 can additionally make use of frequenciesof text queries processed by the server 104 before the system 100'sinstallation. For example, it can be advantageous to use informationfrom stored text queries 202 received by the server 104 in a periodbefore the system 100's installation.

In certain implementations, during a conversion process coinciding withinstallation of the system 100, the query mapping module 210 can analyzequery logs 218 representing past queries for use in updating thenumeric-to-text query mappings 102. The analysis can determinefrequencies of text-only queries processed by the server 104 during atime frame before the system 100 is used to convert numeric queries totext queries. For example, the system 100 can analyze the query logs 218to determine frequencies of past text queries, such as “HOT CAR,” aswell as other previous search queries.

In certain implementations, during the conversion process, the system100 can use the text query frequency counter 216 to aid in identifyingand removing from consideration individual search queries havingfrequency counts that fall below a pre-defined threshold. For example,while it may be useful to consider past search queries, such as “HOTCAR,” that have high frequency counts (e.g., several millions),seldom-used past search queries having extremely low frequency countsmay be omitted from the table because they may be less likely to bereissued in future numeric queries 108. By limiting initialnumeric-to-text query mappings 102 to higher frequency past textqueries, the conversion process can store information in the mappings102 representing more probabilistic future numeric queries.

During the conversion process, as information regarding past textqueries is processed from the query logs 218, the numeric querygenerator 212 can generate equivalent numeric queries for each processedtext query. For example, for a text query stored in the query logs 218,such as “HOT CAR,” the numeric query generator 212 can calculate anequivalent numeric query “468 227” using a translation standard asdescribed above, and a row in the mappings table 115 can be created orupdated to include information related to the text query.

In certain implementations, frequency counts for the text queries can bemaintained substantially simultaneously to the processing of the query108. After each of the text queries has been assigned an equivalentnumeric query, the primary mapper 214 can use the frequency counts tocompute frequency rankings 126.

As a result of the conversion process, the numeric-to-text querymappings 102 can include columns and rows substantially similar to thoseincluded in the mappings table 115, and they can include additionalcolumns (not shown in FIG. 1) that facilitate future maintenance of thenumeric-to-text query mappings 102. This maintenance (e.g., maintainingthe most frequently issued textual query as the primary mapped query fora numerical query) can occur, for example, as the server 104 processesadditional text queries over time, or as the server 104 processesnumeric queries 108.

When the server 104 receives a numeric query 108 for processing, thequery processor 112 can determine if the numeric query 108 isrepresented by one or more entries in the mappings table 115. Forexample, the numeric query 108 may be in the mappings table 115 if theassociated text query has been processed previously by the server 104.If so, the query processor 112 can access one or more corresponding rowswithin the mappings table 115. The response formatter 208 can useinformation from the corresponding rows to provide a response to thenumeric query's originator.

For example, if the numeric query 108 is “228,” the query processor 112can look up the mapped text query 116 “BAT” because its numeric queryfield 114 matches the numeric query 108 “228.” However, when themappings table 115 contains two or more rows matching the numeric query108, the query processor 112 can resolve the ambiguity by selecting the“primary” mapped text query, which has the highest frequency ranking126. For example, if the numeric query 108 is “229,” the query processor112 can select the “primary” mapped text query “BAY,” because it has ahigher frequency ranking than that of “CAW.” The response formatter 208can transmit the selected text query as the associated text query 118 tothe originator of the search query.

When the server 104 receives a numeric query 108 having multiple searchterms, the query processor 112 can use the entire numeric query to lookup a mapped text query 116 in the mappings 102. In certainimplementations, the query processor 112 may divide the numeric query108 into various combinations of its constituent terms, and process eachterm separately or in various combinations. For example, a numeric query108, such as “468 639 227” (representing the text “HOT NEW CAR”), hasthree search terms. The query processor 112 can divide the numeric query108 “468 639 227” for processing in various ways. In one example, themappings table 115 includes a “HOT CAR” entry, but no entry for “HOT NEWCAR.” To process “468 639 227” in this example, the query processor 112can split the query into two components: “468 227” and “639.” In thiscase, the query processor 112 can use “468 227” to look up theassociated mapped text query 116 “HOT CAR”. For the remaining “639”term, the query processor 112 may access the mappings 102 to identifythe associated text query “NEW.” The system may generate “NEW” insteadof other possibilities, such as “MEW,” using frequency rankings 126 inthe mappings table 115 for rows containing mapped text queries 116 “NEW”and “MEW” (not shown in FIG. 1). The query processor 112 can combine thetwo text query terms, and provide them to the search engine 206 to findmatching search results 120.

In certain implementations, if the numeric query 108 is ambiguous, theresponse formatter 208 can transmit a group of text queries 220 inaddition to the search results 120. This can be useful, for example, ifmore than one mapped text query 116 has a high probability of matchingthe user's intent. For example, if the numeric query 108 is “229,” theadditional text queries 220 can include “CAW” and any other mapped textqueries whose numeric query 114 in the mappings table “229.” The usercan then select the desired term form the group of text queries.

In other implementations, the query processor 112 can access user searchprofiles 222 to affect how a particular user's text query 202 isprocessed. The search profiles 222 can contain information for each user(e.g., where the user opts to be identified based on IP address orcookies) regarding patterns of search queries issued over time. Forexample, while some users may have issued queries related toautomobiles, others may have not issued such queries. The type ofinformation contained in the search profiles 222 can be user-specific,while the information maintained in the numeric-to-text query mappings102 may be based on a compilation of submitted text queries frommultiple users. While processing a numeric query 108 for a particularuser, the query processor 112 can give partial consideration to theinformation contained for that user in the search profiles 222. By doingthis, a user who previously searched using terms relating to automobilesmay have terms related to automobiles more heavily weighted than otherusers. For example, if the user submits a numeric query “228,” thesystem may increase the frequency ranking for the term “CAR” above theterm “BAR” because of the user's previous searches relating toautomobiles.

When the server 104 receives a numeric query 108 that is not representedin the numeric-to-text query mappings 102, the numeric-to-text converter128 can determine an associated text query 118 by using thenumeric-to-text converter 128. In certain implementations, the systemmay determine more than one associated text query 118 and provide theuser with list of possible text translations for user selection.

The server 104 may include additional components that facilitateprocessing queries in other ways. In certain implementations, the queryprocessor 112 includes a DTMF-to-ASCII Converter 230. Dual-tonemulti-frequency (DTMF) refers to the signal generated when a digit on atelephone's keypad is pressed. The DTMF-to-ASCII converter 230 canprocess these DTMF signals and create numerical ASCII equivalents thatcan be used by the search engine 206 in generating corresponding searchresults 120. For example, a user can press multiple digits on a cellularphone to formulate a search query such as “468 228.” Here, the searchquery received by the server 104 is a series of DTMF tones. The DTMFtones can be used to generate numerical equivalents used by the querymapping module to determine corresponding text queries.

In certain implementations, the response formatter 208 can include atext-to-speech converter 232 for synthesizing speech corresponding tothe search results 120. For example, referring to FIG. 2, instead of theresponse formatter 208 formatting textual search results 120 in responseto a numeric query 108, the text-to-speech converter 232 can insteadcreate synthesized speech, which verbalizes the search query results (ora portion of the search query results). In this way, a user of acomputing device having a limited display, such as a cellular phone, caninstead “listen” to the results of a search query.

In other implementations, the response formatter 208 can use thetext-to-speech converter 232 to aid the user in confirming thenumeric-to-text translation of the user's numeric query 108. Forexample, if the numeric query 108 is “468 228,” the text-to-speechconverter 232 may create a confirmation message such as “Did you mean‘HOT CAR?’” that may be transmitted to the user's cellular phone.

In certain implementations, the user can confirm by verbalizingconfirmation (or rejection) of the text translation when prompted by theserver. In other implementations, the user can select a control on thecomputing device (e.g., a key on a cellular phone's keypad) to confirmor reject the text query.

The server 104 can include the search engine 206, which in turn caninclude multiple components. The search engine 206 can access an index224 of web sites instead of searching the web sites themselves each timea search request is made, which can make the searching more efficient.The index 224 can be populated using information collected and formattedby a web crawler 226, which can continuously scan potential informationsources for changing information.

The server 104 also may access system storage 228 as necessary. Systemstorage 228 can include one or more storage locations for files neededto operate the system, such as applications, maintenance routines,management and reporting software, etc.

FIG. 3 is a flow chart of an illustrative method 300 for usingtext-based query logs to generate numeric-to-text query mappings 102 inFIG. 2. The method 300 can be used during a conversion processcoincident with the installation of the system 100. During such aconversion process, the information from past text-based search queriescan be examined to produce information usable by the system 100 inprocessing numeric search queries. For example, referring to FIG. 2, theconversion process can pre-populate the numeric-to-text query mappings102 for use by the server 104 for processing numeric queries 108. Suchmappings 102 can allow the server 104 to make more efficient use ofinformation gained from past text queries 202 that occurred prior to thesystem 100's installation.

Processing can start in step 302 when a stored text query is selectedfrom a query log. For example, referring to FIG. 2, a set of query logs218 can store information from past text queries 202 received by theserver 104. Such entries can represent search queries comprising thefull-text search terms of text queries 202. For example, one such entryin the query logs 218 may represent the text query 202 for “HOT CAR”that may have been received by the server 104 several months prior tothe conversion process. The exemplary search query “HOT CAR” has twoterms (“HOT” and “CAR”), although in general a search query representedby an entry in the query logs 218 can have from one to several searchterms.

Upon examination of the search query “HOT CAR,” the conversion processcan use the entire search query, combinations of its multiple searchquery terms, or both, when it creates numeric equivalents. In optionalstep 304, a search query having multiple terms can be split intoconstituent words for the purposes of processing each as an individualsearch term. For example, search query “HOT CAR” can be split into “HOT”and “CAR” text query terms. In certain implementations, the conversionprocess can split a multi-term search query into various combinations ofsearch terms, including single-word search terms. As a result of steps302 and 304, a two-term search query such as “HOT CAR” may result in onetext query (“HOT CAR”), two text queries (“HOT” and “CAR”), or threetext queries (“HOT CAR,” “HOT,” and “CAR”). After splitting a multipleterm search query, the corresponding text queries can be used togenerate numeric queries.

In step 306, numerically equivalent queries are generated from textqueries of previous steps using a keypad standard. For example, theentire stored text query from step 302, as well as any text queries thatstep 304 produced by splitting multiple-term search queries intoconstituent terms can be processed. For each term in a text query, theconversion process assigns a numeric equivalent query based on a keypadstandard. For example, referring to FIG. 2, the numeric query generator212 can generate numerically equivalent queries “468” and “227 from thetext queries “HOT” and “CAR,” respectively. In particular, using theMobile 1 keypad standard, the “H” in “HOT” translates to a “4,” the “O”translates to a “6,” and the “T” translates to an “8.” Similarly, atwo-term text query such as “HOT CAR” can translate to the numericallyequivalent query “468 227” using the Mobile 1 keypad standard. Althoughexamples here show the use of spaces to separate numeric query terms,other implementations may use different symbols or methods to separatethe terms.

In step 308, a determination can be made whether the query log containsadditional stored text entries yet to be processed. For example,referring to FIG. 2, the system 100 can determine if additionalunprocessed entries exist in the query logs 218. If yes, the conversionprocess can repeat steps 302 to 306 for additional entries. Otherwise,if there are no more unprocessed text queries, the method can move tostep 310.

In step 310, the system selects a numerically equivalent querypreviously generated in step 306. For example, the system 100 may selectthe numerically equivalent query “468 227” representing the stored textquery “HOT CAR” in the query logs 218. However, the numericallyequivalent query “468 227” selected here can represent various otherstored text queries, such as “IOU CAP,” that are mapped to the samedigits “468 227.” Having such a numerically equivalent query that ismapped to multiple stored text queries can create ambiguities, which canbe resolved by the system, as described in the next few steps.

In step 312, stored text queries are linked to the correspondingnumerically equivalent query selected in step 310. For example, storedtext queries such as “HOT CAR,” “IOU CAP,” and potentially many othersare “mapped” to the numerically equivalent query “468 227.”

In one implementation, the mapping is accomplished by storing theentries in a table such as the mappings table 115 in FIG. 1, in which aseparate row is added for each of the stored text queries, such as “HOTCAR” and “IOU CAP.” In addition, the system can assign the value “468227” to the numeric query column 114 for each of the newly created rows“HOT CAR” and “IOU CAP.”

In step 314, the system determines the frequency that each of the linkedtext queries occurs in the query log. For example, referring to FIG. 2,the conversion process can use the text query frequency calculator 216to count the frequencies of stored text queries such as “BAY” and “CAW”in the query logs 218. In this example, many other stored text queriesmapped to the numerically equivalent query “229” may exist, but only“BAY” and “CAW” are listed here.

In step 316, the system maps the most popular stored text queryidentified in step 312 to the numerically equivalent query selected instep 310. For example, if the numerically equivalent query is “229,” theprimary mapper 214 (FIG. 2) can compare the frequencies of thecorresponding stored text queries “BAY” and “CAW.” In certainimplementations, when comparing the frequencies of the two queries, themapper may also take into account the time at which these queries weremade, giving higher weight to queries that were made recently. Inparticular, if the frequency for “BAY” exceeds that of “CAW,” theprimary mapper 214 can identify “BAY” as the most popular stored textquery associated with the numerically equivalent query “229.” Theconversion process can achieve this mapping by updating the “BAY” row inmappings table 115.

In optional step 318, the system maps additional stored text queriesidentified in step 312 to the numerically equivalent query selected instep 310. For example, referring to FIG. 2, the mappings table 115 showsboth “BAY” and “CAW” as text queries mapped to the numeric query “229.”However, mappings table 115 can use the frequency ranking column 126 toidentify the most popular stored text query (“BAY”) as well as the lesspopular text queries such as “CAW.” In particular, “BAY” has a frequencyranking of 1, identifying it the most popular text query, and “CAW” hasa ranking of 2, identifying it as occurring with the second highestfrequency. Other additional stored text queries not shown here may havefrequency rankings of 3, 4, 5, and so on, depending on their frequenciesin the query logs 108.

In step 320, the system determines if additional numerically equivalentqueries remain to be processed. If so, the system selects anothernumerically equivalent query for processing, as shown in step 310.Otherwise, the conversion process ends.

FIG. 4 is a flow chart of an illustrative method 400 for processingnumeric queries using numeric-to-text query mappings. For example,referring to FIG. 1, the server 104 can use the mappings 102 to convertnumeric queries 108 it receives from the computing devices 106 intotextual queries.

Processing can start in step 402 when the system receives a numericinput representing a search query composed of numeric terms. Forexample, referring to FIG. 1, the server 104 may receive a numeric query108 such as “468 227” representing “HOT CAR” from a user running a webbrowser 110 on a computing device 106, such as a cellular phone. Thesearch query here is a numeric query generated using the cellularphone's keypad.

In step 404, the system determines if there is a text query that maps tothe entire numeric input received in step 402. For example, referring toFIG. 1, upon receipt of a numeric query 108 such as “468 227,” the queryprocessor 112 can search the numeric-to-text query mappings 102 for acorresponding entry. In particular, the query processor 112 can look fora row having “468 227” in its numeric query column 114. If the queryprocessor 112 finds a matching row, processing can proceed to step 408.Otherwise, processing can continue to step 406.

In optional step 406, the system parses the numeric query into separateterms to be processed as separate numeric queries. For example,referring to FIG. 1, the query processor 112 may receive a query such as“228 227” (e.g., representing “BAT CAR”) for which step 404 determinesthat no matching entry exists in the numeric-to-text query mappings 102.Consequently, the processing of step 406 can include parsing the numericquery “228 227” into its constituent terms “228” and “227,” representing“BAT” and “CAR,” respectively. These separate terms can then beprocessed in the next step. In another example, the query processor 112may receive a query such as “468 227” (e.g., representing “HOT CAR”). Inthis case, the query processor 112 can locate a matching entry in thenumeric-to-text query mappings 102 without splitting the numeric query“468 227” into separate terms.

In step 408, the system selects the primary text query that is mapped tothe numeric query. The selected primary text query may correspond to theentire numeric query or a portion of the numeric query (if the numericquery has been split into two or more terms as described in associationwith the step 406). While performing this step, the system can use theentire numeric query that step 404 determined to have a matching textquery, or the system can use a numeric query representing a separateterm resulting from step 406. For example, the query processor 112 ofFIG. 1 can select the text query “HOT CAR” from the row in mappingstable 115 corresponding to the numeric query “468 227” determined toexist in step 404. In another example, the query processor 112 canselect the text query “BAT” from the row in mappings table 115corresponding to the numeric query term “228” separated in step 406. Inthe latter case, a subsequent execution of step 408 can select the textquery “CAR” corresponding to the second numeric query term “227” of thenumeric query “228 227” representing “BAT CAR.” In each case, the queryprocessor 112 locates the entry in the mappings table 115 having thehighest frequency ranking 126, such highest ranking 126 designating theentry as the “primary” mapped text query.

In optional step 410, the system selects additional text queries mappedto the numeric query. The text queries selected here may be less likelyto correspond to the user's intent when launching the numeric query, butthese additional queries can be included with the primary mapped textquery when results are returned to the user. If the primary mapped textquery selected by the query processor 112 later turns out to beincorrect, the user may be able to locate the intended text query from alist of additional text queries mapped to the same numeric query. Forexample, if the user issues a numeric query “229” intending to searchfor “CAW,” the query processor 112 may instead return “BAY” if it hasthe highest frequency ranking in the mappings table 115. By executingoptional step 410, the system can return alternate text queries to theuser. For example, when selecting additional text queries for thenumeric query “229,” the query processor 112 would also select the “CAW”text query, and return it to the user for selection of the intended textquery.

In step 412, the system determines if there are terms remaining in thenumeric query that are unprocessed. This may occur if processingassociated with the step 406 parses a numeric query into its constituentterms, and one or more terms remain to be processed. If additional termsneed to be processed, processing can repeat steps 408 and 410.Otherwise, processing can proceed to the next step.

In optional step 414, if the numeric query was split for processing, thesystem concatenates the text queries corresponding to the numericqueries and/or associated query terms into a single text query. Forexample, referring to FIG. 1, the query processor 112 can concatenatethe text query terms “BAT” and “CAR” to form a single text query “BATCAR” corresponding to an original numeric query 108 such as “228 227”issued from the computing device 106.

In optional step 416, the system transmits the text query resulting fromstep 414 to the user for confirmation that the converted text query iscorrect. For example, referring to FIG. 1, in response to a numericquery “228 227,” the server 104 transmits the associated text query 118,such as “BAT CAR,” to the computing device 106 (e.g., the user'scellular phone). A browser 110 running on the computing device 106 canthen display the received associated text query 118 in the associatedtext query field 122. In particular, after a user enters a numericsearch query “228 227” using the cellular phone's numeric keypad, thesystem can transmit the associated text query back to the user and theuser would see “BAT CAR,” which is displayed in the associated textquery field 122. In certain implementations, an additional field (notshown) can display the user's original numeric query for referencepurposes.

In step 418, the system receives input from the user specifying whetherthe transmitted text query from step 416 is correct. For example,referring to FIG. 1, if “BAT CAR” displayed in the associated text queryfield 122, is the correct text query (e.g., it is the text queryintended by the user), the user can input a confirmation (e.g., select akey, such as the pound (#) key). Otherwise, the user can input arejection (e.g., select the star (*) key). If the entry is rejected,correction of the entry can occur in the next step, which can be skippedif the entry is already correct.

In optional step 420, the system receives inputs from the user forcorrecting the incorrect text query. For example, referring to FIG. 1,if the user receives an associated text query “BAY” for a numeric query108 such as “229” intended by the user to represent “CAW,” the user canuse controls on the computing device 106 to correct the entry. Incertain implementations, the correction process can involve selecting adifferent text query from a list of choices of text queriescorresponding to the original numeric query. For example, the browser110 may include an additional area for displaying a list of alternatetext queries in addition to “BAY.” The area may be adjacent to theassociated text query field 122. From the list of alternate text queriesthe user can select the intended text query (“CAW”) using other controlson the computing device 106, such as arrow keys, to navigate through thelist and make a selection.

In optional step 422, the system generates search results using theprimary mapped text query. For example, referring to FIG. 2, theresponse formatter 208 includes search results obtained from the searchengine 206 in the response sent to the user. In certain implementations,the system may automatically generate search results with the associatedtext query 118 without waiting for user confirmation that the associatedtext query 118 is correct. For example, the system 100 may generatesearch results when only one text query is mapped to the user's numericquery. In another example, if frequency information for a first textquery exceeds frequency information for a second text query by apredetermined amount—which signifies the first text query is much morelikely to be the intended text than the second text query—search resultsassociated with the first text query can be returned. Alternatively, thesystem may have a default action, where search results associated withthe primary text query are returned to the user.

In step 424, the system transmits additional mapped text queries to theuser. For example, in addition to transmitting “BAT CAR” as the textquery most likely corresponding to the user's numeric query “228 227,”the system transmits the remaining mapped text queries that have a highfrequency of occurrence in previously submitted text search queries,such as “IOU CAR,” to the client device 106 employed by the user.

In optional step 426, the system transmits the search results that weregenerated by the server 104 in step 422. Such search results may be, forexample, included with the associated text query 118 transmitted to theclient device 106. For example, in response to a numeric query such as“228 227,” the system 100 can transmit search results related to “BATCAR”.

In step 428, the system transmits the search results to the originatorof the numeric query. For example, referring to FIGS. 1 and 2, theserver 104 transmits the search results formatted by the responseformatter 208 through the interface 204 as search results 120 to bereceived by the computing device 106. An application, such as a browser110, running on the computing device can display the search results 120in the search results field 124.

FIG. 5 is a schematic diagram of a general computer system and anexample mobile device. Computing device 500 is intended to representvarious forms of digital computers, such as laptops, desktops,workstations, personal digital assistants, servers, blade servers,mainframes, and other appropriate computers. Computing device 550 isintended to represent various forms of mobile devices, such as personaldigital assistants, cellular telephones, smartphones, and other similarcomputing devices. The components shown here, their connections andrelationships, and their functions, are meant to be exemplary only, andare not meant to limit implementations of the embodiments describedand/or claimed in this document.

Computing device 500 includes a processor 502, memory 504, a storagedevice 506, a high-speed interface 508 connecting to memory 504 andhigh-speed expansion ports 510, and a low speed interface 512 connectingto low speed bus 514 and storage device 506. Each of the components 502,504, 506, 508, 510, and 512, are interconnected using various busses,and may be mounted on a common motherboard or in other manners asappropriate. The processor 502 can process instructions for executionwithin the computing device 500, including instructions stored in thememory 504 or on the storage device 506 to display graphical informationfor a GUI on an external input/output device, such as display 516coupled to high speed interface 508. In other implementations, multipleprocessors and/or multiple buses may be used, as appropriate, along withmultiple memories and types of memory. Also, multiple computing devices500 may be connected, with each device providing portions of thenecessary operations (e.g., as a server bank, a group of blade servers,or a multi-processor system).

The memory 504 stores information within the computing device 500. Inone implementation, the memory 504 is a computer-readable medium. In oneimplementation, the memory 504 is a volatile memory unit or units. Inanother implementation, the memory 504 is a non-volatile memory unit orunits.

The storage device 506 is capable of providing mass storage for thecomputing device 500. In one implementation, the storage device 506 is acomputer-readable medium. In various different implementations, thestorage device 506 may be a floppy disk device, a hard disk device, anoptical disk device, or a tape device, a flash memory or other similarsolid state memory device, or an array of devices, including devices ina storage area network or other configurations. In one implementation, acomputer program product is tangibly embodied in an information carrier.The computer program product contains instructions that, when executed,perform one or more methods, such as those described above. Theinformation carrier is a computer- or machine-readable medium, such asthe memory 504, the storage device 506, memory on processor 502, or apropagated signal.

The high speed controller 508 manages bandwidth-intensive operations forthe computing device 500, while the low speed controller 512 manageslower bandwidth-intensive operations. Such allocation of duties isexemplary only. In one implementation, the high-speed controller 508 iscoupled to memory 504, display 516 (e.g., through a graphics processoror accelerator), and to high-speed expansion ports 510, which may acceptvarious expansion cards (not shown). In the implementation, low-speedcontroller 512 is coupled to storage device 506 and low-speed expansionport 514. The low-speed expansion port, which may include variouscommunication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet)may be coupled to one or more input/output devices, such as a keyboard,a pointing device, a scanner, or a networking device such as a switch orrouter, e.g., through a network adapter.

The computing device 500 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as astandard server 520, or multiple times in a group of such servers. Itmay also be implemented as part of a rack server system 524. Inaddition, it may be implemented in a personal computer such as a laptopcomputer 522. Alternatively, components from computing device 500 may becombined with other components in a mobile device (not shown), such asdevice 550. Each of such devices may contain one or more of computingdevice 500, 550, and an entire system may be made up of multiplecomputing devices 500, 550 communicating with each other.

Computing device 550 includes a processor 552, memory 564, aninput/output device such as a display 554, a communication interface566, and a transceiver 568, among other components. The device 550 mayalso be provided with a storage device, such as a microdrive or otherdevice, to provide additional storage. Each of the components 550, 552,564, 554, 566, and 568, are interconnected using various buses, andseveral of the components may be mounted on a common motherboard or inother manners as appropriate.

The processor 552 can process instructions for execution within thecomputing device 550, including instructions stored in the memory 564.The processor may also include separate analog and digital processors.The processor may provide, for example, for coordination of the othercomponents of the device 550, such as control of user interfaces,applications run by device 550, and wireless communication by device550.

Processor 552 may communicate with a user through control interface 558and display interface 556 coupled to a display 554. The display 554 maybe, for example, a TFT LCD display or an OLED display, or otherappropriate display technology. The display interface 556 may compriseappropriate circuitry for driving the display 554 to present graphicaland other information to a user. The control interface 558 may receivecommands from a user and convert them for submission to the processor552. In addition, an external interface 562 may be provide incommunication with processor 552, so as to enable near areacommunication of device 550 with other devices. External interface 562may provide, for example, for wired communication (e.g., via a dockingprocedure) or for wireless communication (e.g., via Bluetooth or othersuch technologies).

The memory 564 stores information within the computing device 550. Inone implementation, the memory 564 is a computer-readable medium. In oneimplementation, the memory 564 is a volatile memory unit or units. Inanother implementation, the memory 564 is a non-volatile memory unit orunits. Expansion memory 574 may also be provided and connected to device550 through expansion interface 572, which may include, for example, aSIMM card interface. Such expansion memory 574 may provide extra storagespace for device 550, or may also store applications or otherinformation for device 550. Specifically, expansion memory 574 mayinclude instructions to carry out or supplement the processes describedabove, and may include secure information also. Thus, for example,expansion memory 574 may be provide as a security module for device 550,and may be programmed with instructions that permit secure use of device550. In addition, secure applications may be provided via the SIMMcards, along with additional information, such as placing identifyinginformation on the SIMM card in a non-hackable manner.

The memory may include for example, flash memory and/or MRAM memory, asdiscussed below. In one implementation, a computer program product istangibly embodied in an information carrier. The computer programproduct contains instructions that, when executed, perform one or moremethods, such as those described above. The information carrier is acomputer- or machine-readable medium, such as the memory 564, expansionmemory 574, memory on processor 552, or a propagated signal.

Device 550 may communicate wirelessly through communication interface566, which may include digital signal processing circuitry wherenecessary. Communication interface 566 may provide for communicationsunder various modes or protocols, such as GSM voice calls, SMS, EMS, orMMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others.Such communication may occur, for example, through radio-frequencytransceiver 568. In addition, short-range communication may occur, suchas using a Bluetooth, WiFi, or other such transceiver (not shown). Inaddition, GPS receiver module 570 may provide additional wireless datato device 550, which may be used as appropriate by applications runningon device 550.

Device 550 may also communication audibly using audio codec 560, whichmay receive spoken information from a user and convert it to usabledigital information. Audio codex 560 may likewise generate audible soundfor a user, such as through a speaker, e.g., in a handset of device 550.Such sound may include sound from voice telephone calls, may includerecorded sound (e.g., voice messages, music files, etc.) and may alsoinclude sound generated by applications operating on device 550.

The computing device 550 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as acellular telephone 580. It may also be implemented as part of asmartphone 582, personal digital assistant, or other similar mobiledevice.

Various implementations of the systems and techniques described here canbe realized in digital electronic circuitry, integrated circuitry,specially designed ASICs (application specific integrated circuits),computer hardware, firmware, software, and/or combinations thereof.These various implementations can include implementation in one or morecomputer programs that are executable and/or interpretable on aprogrammable system including at least one programmable processor, whichmay be special or general purpose, coupled to receive data andinstructions from, and to transmit data and instructions to, a storagesystem, at least one input device, and at least one output device.

These computer programs (also known as programs, software, softwareapplications or code) include machine instructions for a programmableprocessor, and can be implemented in a high-level procedural and/orobject-oriented programming language, and/or in assembly/machinelanguage. As used herein, the terms “machine-readable medium”“computer-readable medium” refers to any computer program product,apparatus and/or device (e.g., magnetic discs, optical disks, memory,Programmable Logic Devices (PLDs)) used to provide machine instructionsand/or data to a programmable processor, including a machine-readablemedium that receives machine instructions as a machine-readable signal.The term “machine-readable signal” refers to any signal used to providemachine instructions and/or data to a programmable processor.

To provide for interaction with a user, the systems and techniquesdescribed here can be implemented on a computer having a display device(e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor)for displaying information to the user and a keyboard and a pointingdevice (e.g., a mouse or a trackball) by which the user can provideinput to the computer. Other kinds of devices can be used to provide forinteraction with a user as well; for example, feedback provided to theuser can be any form of sensory feedback (e.g., visual feedback,auditory feedback, or tactile feedback); and input from the user can bereceived in any form, including acoustic, speech, or tactile input.

The systems and techniques described here can be implemented in acomputing system that includes a back-end component (e.g., as a dataserver), or that includes a middleware component (e.g., an applicationserver), or that includes a front-end component (e.g., a client computerhaving a graphical user interface or a Web browser through which a usercan interact with an implementation of the systems and techniquesdescribed here), or any combination of such back-end, middleware, orfront-end components. The components of the system can be interconnectedby any form or medium of digital data communication (e.g., acommunication network). Examples of communication networks include alocal area network (“LAN”), a wide area network (“WAN”), and theInternet.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

A number of embodiments have been described. Nevertheless, it will beunderstood that various modifications may be made without departing fromthe spirit and scope of the embodiments. For example, various forms ofthe flows shown above may be used, with steps re-ordered, added, orremoved. Also, although several applications of the payment systems andmethods have been described, it should be recognized that numerous otherapplications are contemplated. Accordingly, other embodiments are withinthe scope of the following claims.

1.-23. (canceled)
 24. A method implemented by a server system of one ormore data processing devices, the method comprising: receiving, at theserver system, information characterizing ambiguous user input at aremote device, the ambiguous user input representing a search query;mapping, by the server system, two or more textual search queries to theambiguous user input; determining, by the server system, that a first ofthe textual search queries is a most probable resolution of theambiguous user input; generating, by the server system, a first set ofsearch results responsive to the first of the textual search querieswithout waiting for user confirmation that the first of the textualsearch queries is the correct resolution of the ambiguous user input;and transmitting, by the server system, the first set of search resultsto the remote device from which the ambiguous user input originated. 25.The method according to claim 24, further comprising transmitting thefirst of the textual search queries to the remote device after thegeneration of the first set of search results.
 26. The method accordingto claim 24, wherein mapping the two or more textual search queries tothe ambiguous user input comprises accessing a mapping table thatassociates the two or more textual search queries with the ambiguoususer input.
 27. The method according to claim 24, further comprisingtransmitting additional of the two or more textual search queries to theremote device after the generation of the first set of search results.28. The method according to claim 27, wherein the additional of the twoor more textual search queries are textual search queries that have arelatively high frequency of occurrence in a collection of previouslysubmitted text search queries.
 29. The method according to claim 24,wherein determining that the first of the textual search queries is themost probable resolution comprises determining that the first of thetextual search queries has a highest frequency of occurrence incollection of text search queries previously submitted to a searchengine programmed to access an index of web sites from amongst the twoor more textual search queries mapped to the ambiguous user input. 30.The method according to claim 24, wherein: the method further comprisesdetermining, by the server system, that a frequency of occurrence of thefirst of the textual search queries in a collection of text searchqueries previously submitted to a search engine programmed to access anindex of web sites exceeds a frequency of occurrence of a second of thetextual search queries in the collection of previously-submitted textsearch queries by a predetermined amount; and the generation of thefirst set of search results is responsive to the determination that thepredetermined amount is exceeded.
 31. The method according to claim 24,wherein the ambiguous user input comprises ambiguous numeric keypadinput at a remote handheld device.
 32. The method according to claim 24,wherein the first of the textual search queries corresponds to a portionof the ambiguous user input.
 33. A system implemented by one or moredata processing devices, the system comprising: a search engineprogrammed to access an index of web sites in response to receipt of asearch query to identify web sites including information responsive tothe search query; and a search query processor programmed to performoperations, the operations comprising: receiving informationcharacterizing ambiguous user input at a remote device, the ambiguoususer input representing a search query, mapping two or more textualsearch queries to the ambiguous user input, determining that a first ofthe textual search queries is a most probable resolution of theambiguous user input, submitting the first of the textual search queriesto the search engine without waiting for user confirmation that thefirst of the textual search queries is the correct resolution of theambiguous user input, a response formatter programmed to performoperations, the operations comprising: receiving a first set of searchresults generated by the search engine in response to the submission ofthe first of the textual search queries by the search query processor,and formatting the first set of search results for transmission to theremote device from which the ambiguous user input originated.
 34. Thesystem according to claim 33, further comprising a query log storinginformation characterizing from past text queries received by the searchengine.
 35. The system according to claim 34, wherein the system isprogrammed to determine a frequency at which each of a collection oftext queries appears in the query log.
 36. The system according to claim33, wherein: the system further comprises a mapping table, wherein themapping table includes two or more possible textual search queryresolutions of the ambiguous user input; and mapping the two or moretextual search queries to the ambiguous user input comprises accessingthe mapping table to identify the two or more possible textual searchquery resolutions.
 37. The system according to claim 33, wherein theresponse formatter is further programmed to format the first of thetextual search queries for transmission to the remote device afterreceiving the first set of search results.
 38. The system according toclaim 33, wherein the response formatter is further programmed to formatadditional of the two or more textual search queries for transmission tothe remote device after receiving the first set of search results. 39.The system according to claim 33, wherein determining that the first ofthe textual search queries is the most probable resolution comprisesdetermining that the first of the textual search queries has a highestfrequency of occurrence in collection of text search queries previouslysubmitted to a search engine programmed to access an index of web sitesfrom amongst the two or more textual search queries mapped to theambiguous user input.
 40. The system according to claim 33, wherein: thesearch query processor is further programmed to determine that afrequency of occurrence of the first of the textual search queries in acollection of text search queries previously submitted to a searchengine programmed to access an index of web sites exceeds a frequency ofoccurrence of a second of the textual search queries in the collectionof previously-submitted text search queries by a predetermined amount;and the submission of the first of the textual search queries isresponsive to the determination that the predetermined amount isexceeded.
 41. The system according to claim 33, wherein the ambiguoususer input comprises ambiguous numeric keypad input at a remote handhelddevice.
 42. The system according to claim 33, wherein the first of thetextual search queries corresponds to a portion of the ambiguous userinput.
 43. A computer-readable medium containing instructions that ifexecuted by a computing system cause the computing system to perform amethod for resolving ambiguous user input, the method comprising:receiving information characterizing ambiguous user input at a remotedevice, the ambiguous user input representing a search query; mappingtwo or more textual search queries to the ambiguous user input;determining that a first of the textual search queries is a mostprobable resolution of the ambiguous user input; generating a first setof search results responsive to the first of the textual search querieswithout waiting for user confirmation that the first of the textualsearch queries is the correct resolution of the ambiguous user input;and transmitting the first set of search results to the remote devicefrom which the ambiguous user input originated.
 44. Thecomputer-readable medium of claim 43, wherein the method furthercomprises transmitting the first of the textual search queries to theremote device after the generation of the first set of search results.45. The computer-readable medium of claim 43, wherein the method furthercomprises transmitting the first of the textual search queries to theremote device after the generation of the first set of search results.46. The computer-readable medium of claim 43, wherein mapping the two ormore textual search queries to the ambiguous user input comprisesaccessing a mapping table that associates the two or more textual searchqueries with the ambiguous user input.
 47. The computer-readable mediumof claim 46, wherein the additional of the two or more textual searchqueries are textual search queries that have a relatively high frequencyof occurrence in a collection of previously submitted text searchqueries.
 48. The computer-readable medium of claim 43, whereindetermining that the first of the textual search queries is the mostprobable resolution comprises determining that the first of the textualsearch queries has a highest frequency of occurrence in collection oftext search queries previously submitted to a search engine programmedto access an index of web sites from amongst the two or more textualsearch queries mapped to the ambiguous user input.
 49. Thecomputer-readable medium of claim 43, wherein: the method furthercomprises determining, by the server system, that a frequency ofoccurrence of the first of the textual search queries in a collection oftext search queries previously submitted to a search engine programmedto access an index of web sites exceeds a frequency of occurrence of asecond of the textual search queries in the collection ofpreviously-submitted text search queries by a predetermined amount; andthe generation of the first set of search results is responsive to thedetermination that the predetermined amount is exceeded.
 50. Thecomputer-readable medium of claim 43, wherein the ambiguous user inputcomprises ambiguous numeric keypad input at a remote handheld device.51. The computer-readable medium of claim 43, wherein the first of thetextual search queries corresponds to a portion of the ambiguous userinput.